<<< BACK NEXT >>>

СТРОКОВЫЕ ФУНКЦИИ

NToFS ( <число>[, <база> [, <стиль заполнения>, <длина> [, <символ заполнения>] ] ])

<число> - результат любого выражения, дающего число.
<стиль заполнения> - 0, положительное число, отрицательное число или  NULL - если больше нуля, то число располагается слева, а заполнение осуществляется справа; если отрицательное, то заполнение слева, а расположение нумерала -
справа; NULL эквивалентен 0.
<символ заполнения> - если задан, то заполнения осуществляются данным символом, иначе - пробелом.

StrCpy(<строка 1>, <строка 2> ) – копирует <строку 2> в <строку 1>.

AT( <строка> , <искомая подстрока> ) - осуществляет поиск <искомая подстрока> в
<строка>. Возвращает позицию, с которой <искомая подстрока> начинается в
<строка>, если такое вхождение имеет место, иначе возвращаемое число отрицательно.

PADL( <исходная строка>, <результирующая строка>, <>, [, <знак-заполнитель> ] )

PADR( <исходная строка>, <результирующая строка>, <>, [, <знак-заполнитель> ] )

StrLen( <строка> ) - длина строки

Symbol( <число> ) - преобразует в тип байт

ElemAsStr( <выражение> ) - преобразует значение <выражения> в строку.
<Выражение> должно быть элементом массива, строкой или элементом блока типа DATA или IMAGE.
IsAlnum( <код символа> ) - определяет, является ли <код символа> кодом буквы или цифры. Возвращает TRUE, если так, и FALSE, если иначе.
IsDigit( <код символа> ) - определяет, является ли <код символа> кодом цифры. Возвращает TRUE, если так, и FALSE, если иначе.
IsAlpha( <код символа> ) - определяет, является ли <код символа> кодом буквы. Возвращает TRUE, если так, и FALSE, если иначе.
StrnCpy( <строка 1>, <строка 2>, <количество> ) копирует <количество> знаков строки 2 в строку 1. Если количество знаков меньше или равно длине <строка 2>, то в <строка 1> байт завершения строки не устанавливается, и наоборот, если
имеет место обратное, строка 1 заполняется 0x00 в байтах, превышающих длину строки 2.

AtOneOf( <строка>, <символ> [ {, <символ> } ]  ) осуществляет поиск одного из перечисленных символов в указанной строке до байта конца строки 0x00. Возвращает номер позиции и код символа в интегрированной 'I'

pos := IntLeft( _capAtOneOf( ... ) ) == _capAtOneOf( ... ) - <позиция символа>
                                                             или 0;
code := IntRight( pos ) -  код символа.

AtOneOfx0A( <строка>, <символ> [ {, <символ> } ]  ) осуществляет поиск одного из перечисленных символов в указанной строке до символа перевода каретки 0x0A.Возвращает номер позиции и код символа в интегрированной 'I'

pos := IntLeft( _capAtOneOf( ... ) ) == _capAtOneOf( ... ) - <позиция символа> или 0;
code := IntRight( pos ) -  код символа.
Если ни один из перечисленных символов не найден, то в позиция будет равна 0, а вместо <код символа> будет стоять позиция 0x0A.

StoN( <строка>, <тип> ) - возвращает результат преобразования содержимого строки в число заданного типа.

ЭКРАННЫЕ ФУНКЦИИ

Функции CAPER, обеспечивающие возможности отображения информации, сориентированы на Win32 GUI, хотя в целом я пытался сохранить стилистику CAPER предыдущих версий, которая, в свою очередь, опиралась на принципы, заложенные
в BGI: инициализацию работы с экраном, базовые операции вывода на экран текста, пиксела, линий, прямоугольников, окружностей, взятия пиксела, региона, завершения работы с экраном. В среде MS Windows реализация более или менее внятной концепции работы с экраном - довольно серьезная проблема, если учесть "размазанность" графического интерфейса Win 32. И в определенной степени пришлось следовать этой "размазанности". Существенно, что в CAPER исключен многооконный стиль работы, т.е. активно всегда одно окно Windows. Это имеет свое принципиальное и техническое обоснование. Во-первых, преследуется цель создания языка, не зависящего от возможностей операционной системы, обладающего внятной концепцией работы с экраном (экранами), и в то же время, цель разработки данной версии - разработка в первую очередь эффективных базовых средств управления параллельными вычислениями. Т.е. данный вопрос оставлен на будущее.
   Здесь же представлены функции привязки к графическим средствам Windows в однооконном режиме. Создание окна Windows

   VMCreateWindow(
              <строка имени класса окна>,
              <строка имени окна>,
              <тип окна>,
              <Y0>,
              <X0>,
              <Y1>,
              <X1>
               )

<Y0>, <X0>, <Y1>, <X1> - координаты окна.

   Здесь и далее координаты определяются согласно программистским традициям с левого верхнего угла. Вторая пара координат указывает правый нижний угол.

Turn_Display( On/Off ) -включает/выключает окно.
VMDestroyWin() - уничтожает окно.
ScrollWindow(
               <DY>,
               <DX>,
               <Y10>, <X10>, <Y11>, <X11>,
               <Y20>, <X20>, <Y21>, <X21>
            )
<DY> - величина прокрутки по вертикали,
<DX> - величина прокрутки по горизонтали,
<Y10>, <X10>, <Y11>, <X11> - координаты прокручиваемого прямоугольника.
<Y20>, <X20>, <Y21>, <X21> - координаты clip-прямоугольника

прокручивает область окна, ограниченную координатами <Y10>, <X10>, <Y11>, <X11>, на <DY> и <DX>.
Биты, расположенные вовне прямоугольника втягиваются вовнутрь и отображаются.
Биты, выталкиваемые из прямоугольника вовне, не отображаются.

isClosed() - возвращает 1, если окно закрыто, и 0, если открыто.
GetDevCaps(<параметр>) - функция - прямой аналог функции GetDeviceCaps из Win32.

        
Виртуальной машиной Caper поддерживаются прочие функции управления окном согласно логике Windows, однако здесь они не представлены – концепция графики в Caper поддержана специальной виртуальной машиной.

<<< BACK NEXT >>>